package com.shenzhenai.module_pattern.demo7;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
 * @author huangzehui
 * @date 2025/9/3 13:20 周三
 * @description
 */
public class Client {

    private final static String FILE_PATH = "/Volumes/HD1/hzhProject/dn_compose_learn/design_patterns/module_design_patterns/src/a.txt";

    public static void main(String[] args) throws Exception {
        //writeObject2File();

        // 下面两次打印的对象地址不一样，说明单例被破坏了
        readObjectFromFile();
        readObjectFromFile();
    }

    // 从文件读取数据（对象）
    public static void readObjectFromFile() throws Exception {
        // 1. 创建对象输入流对象
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_PATH));
        // 2. 读取对象
        Singleton instance = (Singleton) ois.readObject();
        // 3. 释放资源
        ois.close();

        System.out.println(instance);
    }


    // 向文件中写数据（对象）
    public static void writeObject2File() throws Exception {
        // 1. 获取 Singleton 对象
        Singleton instance = Singleton.getInstance();
        // 2. 创建对象输出流对象
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILE_PATH));
        // 3. 写对象
        oos.writeObject(instance);
        // 4. 释放资源
        oos.close();
    }
}
